﻿using System;
using System.Collections.Generic;

namespace MinecraftEnchantCalculator.Abstractions;

/// <summary>
///   铁砧操作接口，定义了附魔物品的合并/ enchant 操作规范
/// </summary>
public interface IAnvil
{
  /// <summary>
  ///   对多个可附魔物品执行附魔合并操作
  /// </summary>
  /// <param name="enchantables">待处理的可附魔物品列表</param>
  /// <param name="operationCallback">
  ///   操作回调函数，用于通知每次合并操作的结果
  ///   回调参数说明：
  ///   - 第一个参数：参与合并的第一个物品
  ///   - 第二个参数：参与合并的第二个物品
  ///   - 第三个参数：合并后的结果物品
  /// </param>
  void Enchant(
    List<IEnchantable> enchantables,
    Action<IEnchantable, IEnchantable, IEnchantable> operationCallback
  );
}